package com.tfos.study.mvc.content.negotiation.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**
 * 类功能说明：开启支持扩展名功能，设置内容协商机制 <br/>
 * 公司名称：TF（腾飞）开源 <br/>
 * 作者：luorongxi <br/>
 */
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        //开启支持扩展名功能，例如：xxx.json，xxx.xml
        configurer.favorPathExtension(true)
                .useJaf(false)
                //format模式，例如：xxx?format=json,xxx?format=xml
                .favorParameter(true)
                //禁用accept协商方式，即不关心前端传的accept值
                .ignoreAcceptHeader(true)
                //哪个放在前面，哪个的优先级就高；当上面这个accept未禁用时，若请求传的accept不能覆盖下面两种，则会出现406错误
                .defaultContentType(MediaType.APPLICATION_JSON)
                .mediaType("json", MediaType.APPLICATION_JSON)
                .mediaType("xml", MediaType.APPLICATION_XML);
    }
}
